package o2o.dao.VO.order;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import o2o.cache.order.OrderStatusNameMemory;
import o2o.dao.PO.order.OrderInfoGoods;

import java.util.List;

//订单信息  有验证码
@Data
@Accessors(chain = true)
public class OrderInfoVerifyVO {
    private Long id; // 标识
    private String orderNo; // 订单编号
    private String payOrderNo; // 支付订单号
    private Integer preDayNo;//每日编号
    private Integer orderType = 1;//订单类型  1普通订单 2跑腿订单  3代购订单 4服务订单（开锁）
    private Long shopReadyTime;//店铺备餐时间
    private Long shopId; // 店铺ID
    private String shopName;//店铺名称
    private String shopPhone;//店铺电话
    private String shopImageUrl;//店铺头像
    private String shopAddress;//店铺地址
    private Double shopLat;//店铺纬度
    private Double shopLng;//店铺经度
    private Integer shopSelfPost;//店铺是否自配送 0平台配送 1自配送
    private Integer isPartCancelApply; //用户申请部分商品退款  0未申请退款 1申请退款 2申请退款成功 3申请退款未通过
    private Integer shopSureBySys;// 商家接单是否为系统为商家接单 1是
    private Integer postmanSureBySys;// 系统派单 0正常订单 1系统派单并直接到骑手进行中

    private Long agentId; //代理ID

    private String username; // 提交订单的用户账号
    private int totalCount = 0; // 购买数量(几件商品)
    private double totalPrice = 0; //订单总金额
    private int orderStatus; // 订单状态
    private String orderStatusName; // 订单状态
    private String orderStatusNameLang; // 订单状态多语言
    private Long deliveryId; // 收货地址
    private Double deliveryPrice;//收取的配送费
    private Double originalYunFei;//原始配送费
    private Double originalYunFeiShop;//原始配送费，店铺承担金额
    private Double packetPrice;//打包费
    private Integer canJuCount;//餐具个数
    private Double canJuPrice;//餐具总金额
    private Double tipMoney; // 订单小费

    private String payType; // 付款方式
    private String payType2; // 付款方式2
    //    private String payTypeName; // 付款方式(1:网上支付，2:货到付款，3支付宝，4微信)
    private String cancelReason; // 取消订单的原因
    private String rejectReason; // 拒收的原因
    private String refundReason; // 退货的原因
    private String reBackReason; // 商家拒绝退款原因
    private String chargeId; // 对应的ping++的支付凭证
    private Long payTime; //订单支付时间
    private Long createTime; // 创建日期
    private Long updateTim; // 创建日期

    private Integer isPaid;//已经成功支付成功

    private Double awardMoney;//活动满减金额
    private Double totalMoney;//订单总金额（包含所有 配送费、商品总金额、满减金额未减）
    private Double totalGoodsMoney;//商品总金额

    private Double shopMoney;//店铺收入金额
    private Integer groupState;     // 聚合订单 0 非聚合订单 1 聚合订单父订单  11 聚合订单子订单

    private Integer isRefundApply;//用户申请退款  0未申请退款 1申请退款 2申请退款成功 3申请退款未通过
    private String canGrabCompanyIds;// 可以抢单的公司ids
    private Long grabCompanyId;//抢单公司id
    private String grabCompanyName;// 抢单公司名

    private String postFailReason;// 无法送达原因、商家拒绝接单原因、骑手拒绝接单原因

    //    private UserAddressVO postman;//收货地址
    private List<OrderGoodsVO> goods;//该订单的所有商品
    private List<OrderGoodsLabelVO> labelList;//订单标签

    private String buyer; // 收货人姓名
    private String telephone; // 收货人联系方式
    private String address; // 收货人具体地址
    private String address2; //楼号房间号
    private Double lng = 0d; //经度
    private Double lat = 0d; //纬度
    private String province; // 省份
    private String city; //收货市
    private String county; // 区县

    private String verifyCode; //取货验证码

    private Integer isUrgent = 0;//是否加急   1加急 0非加急

    private int isComment = 0;//是否已评价 0未评价 1已评价

    private Integer isZiQu = 0;//是否为自取  1自取，0非自取
    private Integer isAppointment = 0;//是否预约（0立即送出，1预约）
    private Long ziQuTime;//自取时间

    private String postManUsername;//配送员账号
    private String postmanName;//配送员姓名
    private String postmanPhone;//配送员电话
    private String postmanImageUrl;//配送员头像

    private String serviceUsername;//客服账号

    private String changePostman;//正在转单配送员账号

    private Long userUrgeTime; // 用户催单时间
    private Long shopSureTime;//店铺接单或拒绝时间
    private Long shopPushTime;//店铺确认发货时间
    private Long postmanPullTime;//配送员确认取货时间
    private Long postmanSureTime;//配送员接单或抢单时间
    private Long postmanArrShopTime;//配送员到达店铺时间
    private Long postmanFinishTime;//配送员送达或无法送达时间
    private Long userFinishTime;//用户完成时间
    private Long shopFinishTime;//店铺完成（到店确认）时间

    private int isSeriesSaleShop = 0;//  店铺类型 0正常的 1 批发商 2 校内商家
    private String secondaryPostManUsername;//二级配送员账号
    private String secondaryPostmanName;//二级配送员姓名
    private String secondaryPostmanPhone;//二级配送员电话
    private String secondaryPostmanImageUrl;// 二级配送员头像
    private Long secondaryPostmanSureTime;//二级骑手接单时间
    private Long secondaryPostmanPullTime;//二级骑手提货时间
    private Long postmanPostPointTime;//骑手送达提货点时间

    private Long serviceSureTime;//客服接单时间
    private Long servicePushTime;//客服处理时间
    private Long serviceFinishTime;//客服完成订单时间

    private Integer agentPostmanOverTime; // 设置的要求骑手时长(postmanOverTime)
    private Integer agentShopOverTime; // 设置的要求店铺时长(shopOverTime)
    private Integer agentOrderOverTime = 0;// 设置的订单要求时长(orderOverTime)
    private Integer agentNotTakenOrderTime = 0; //  待取订单超时时间(notTakenOrderTime)
    private Integer agentPostmanAdvanceTime = 0; //  设置提前配送完成时间(postmanAdvanceTime)
    private Integer agentAppointPostmanTime = 0; //  设置提前推送给骑手的时间(appointPostmanTime)
    private Integer alertOrderTime = 0; //  设置的订单即将超时提醒时间[支付-骑手确认送达](alertOrderTime)
    private Integer alertPostmanTime = 0; //  设置的骑手即将超时提醒时间[骑手接单-确认送达](alertPostmanTime)

    // 骑手多长时间可以退回
    private Integer postmanBackOrderTime = 0; //  设置骑手退订单时间(postmanBackOrderTime)

    private List<OrderInfoVO> orderInfoList;// 聚合订单 子订单情况

    private OtherOrderInfoVO otherOrderInfo;//跑腿代购订单详情

    private Integer timeOutReminder; // 超时提醒 0 未超时 1 即将超时 2.已超时
    private Long outTime = 0L; // 超时时间

    private String note; //备注
    private String shopNote; //备注

    private String extra1;//备用字段1
    private String extra2;//备用字段2
    private String extra3;//备用字段3

    private Long orderDeliveryTime;

    private String sorts;

    private List<OrderInfoGoods> goodsList;

    //    public Long getOutTime() {
//        return outTime;
//    }
//
//    public OrderInfoVerifyVO setOutTime(Long outTime) {
//        this.outTime = outTime;
//        return this;
//    }
//
//    public Integer getTimeOutReminder() {
//        return timeOutReminder;
//    }
//
//    public OrderInfoVerifyVO setTimeOutReminder(Integer timeOutReminder) {
//        this.timeOutReminder = timeOutReminder;
//        return this;
//    }
//
//    public String getPayOrderNo() {
//        return payOrderNo;
//    }
//
//    public void setPayOrderNo(String payOrderNo) {
//        this.payOrderNo = payOrderNo;
//    }
//
//    public long getId() {
//        return id;
//    }
//
//    public void setId(long id) {
//        this.id = id;
//    }
//
//    public String getOrderNo() {
//        return orderNo;
//    }
//
//    public void setOrderNo(String orderNo) {
//        this.orderNo = orderNo;
//    }
//
//    public Long getShopId() {
//        return shopId;
//    }
//
//    public void setShopId(Long shopId) {
//        this.shopId = shopId;
//    }
//
//    public String getUsername() {
//        return username;
//    }
//
//    public void setUsername(String username) {
//        this.username = username;
//    }
//
//    public int getTotalCount() {
//        return totalCount;
//    }
//
//    public void setTotalCount(int totalCount) {
//        this.totalCount = totalCount;
//    }
//
//    public double getTotalPrice() {
//        return totalPrice;
//    }
//
//    public void setTotalPrice(double totalPrice) {
//        this.totalPrice = totalPrice;
//    }
//
//    public int getOrderStatus() {
//        return orderStatus;
//    }
//
//    public void setOrderStatus(int orderStatus) {
//        this.orderStatus = orderStatus;
//    }
//
//    public Long getDeliveryId() {
//        return deliveryId;
//    }
//
//    public void setDeliveryId(Long deliveryId) {
//        this.deliveryId = deliveryId;
//    }
//
//    public String getPayType() {
//        return payType;
//    }
//
//    public void setPayType(String payType) {
//        this.payType = payType;
//    }
//
//    public String getCancelReason() {
//        return cancelReason;
//    }
//
//    public void setCancelReason(String cancelReason) {
//        this.cancelReason = cancelReason;
//    }
//
//    public String getRejectReason() {
//        return rejectReason;
//    }
//
//    public void setRejectReason(String rejectReason) {
//        this.rejectReason = rejectReason;
//    }
//
//    public String getRefundReason() {
//        return refundReason;
//    }
//
//    public void setRefundReason(String refundReason) {
//        this.refundReason = refundReason;
//    }
//
//    public String getChargeId() {
//        return chargeId;
//    }
//
//    public void setChargeId(String chargeId) {
//        this.chargeId = chargeId;
//    }
//
//    public Long getPayTime() {
//        return payTime;
//    }
//
//    public void setPayTime(Long payTime) {
//        this.payTime = payTime;
//    }
//
//
//    public List<OrderGoodsVO> getGoods() {
//        return goods;
//    }
//
//    public void setGoods(List<OrderGoodsVO> goods) {
//        this.goods = goods;
//    }
//
//
//    //     SUBMIT = 1; //用户提交订单
////     PAYED = 2; //订单已支付
////     CANCEL = 3; //用户未支付取消订单
////     PAYED_CANCEL = 4; //用户已支付取消订单
////     SHOP_SURE = 5; //商户接单
////     SHOP_REFUSED = 6; //商户拒绝接单
////     PEISONG = 7; //商户开始配送
////     POSTMAN_SURE = 8; //配送接单
////
////     OVER = 9; //订单完成
//
    public String getOrderStatusName() {
        orderStatusName = OrderStatusNameMemory.getInstance().getStatusName(orderStatus);
        return orderStatusName;
    }

    public String getOrderStatusNameLang() {
        orderStatusNameLang = OrderStatusNameMemory.getInstance().getStatusNameLang(orderStatus);
        return orderStatusNameLang;
    }
//
//    public void setOrderStatusName(String orderStatusName) {
//        this.orderStatusName = orderStatusName;
//    }
//
//    public String getShopName() {
//        return shopName;
//    }
//
//    public void setShopName(String shopName) {
//        this.shopName = shopName;
//    }
//
//    public Long getCreateTime() {
//        return createTime;
//    }
//
//    public void setCreateTime(Long createTime) {
//        this.createTime = createTime;
//    }
//
//    //
////     payByNet = 1; //网上付款
////     payByArrive = 2; //货到付款
////     payByAli = 3; //支付宝
////     payByWX = 4; //微信
////    public String getPayTypeName() {
////        payTypeName = OrderUtils.getPayTypeName(payType);
////        return payTypeName;
////    }
////
////    public void setPayTypeName(String payTypeName) {
////        this.payTypeName = payTypeName;
////    }
//
//
//    public Double getDeliveryPrice() {
//        return deliveryPrice;
//    }
//
//    public void setDeliveryPrice(Double deliveryPrice) {
//        this.deliveryPrice = deliveryPrice;
//    }
//
//    public String getShopPhone() {
//        return shopPhone;
//    }
//
//    public void setShopPhone(String shopPhone) {
//        this.shopPhone = shopPhone;
//    }
//
//    public String getShopImageUrl() {
//        return shopImageUrl;
//    }
//
//    public void setShopImageUrl(String shopImageUrl) {
//        this.shopImageUrl = shopImageUrl;
//    }
//
//    public void setId(Long id) {
//        this.id = id;
//    }
//
//    public String getBuyer() {
//        return buyer;
//    }
//
//    public void setBuyer(String buyer) {
//        this.buyer = buyer;
//    }
//
//    public String getTelephone() {
//        return telephone;
//    }
//
//    public void setTelephone(String telephone) {
//        this.telephone = telephone;
//    }
//
//    public String getAddress() {
//        return address;
//    }
//
//    public void setAddress(String address) {
//        this.address = address;
//    }
//
//    public Double getLng() {
//        return lng;
//    }
//
//    public void setLng(Double lng) {
//        this.lng = lng;
//    }
//
//    public Double getLat() {
//        return lat;
//    }
//
//    public void setLat(Double lat) {
//        this.lat = lat;
//    }
//
//    public Integer getShopSelfPost() {
//        return shopSelfPost;
//    }
//
//    public OrderInfoVerifyVO setShopSelfPost(Integer shopSelfPost) {
//        this.shopSelfPost = shopSelfPost;
//        return this;
//    }
//
//    public String getProvince() {
//        return province;
//    }
//
//    public void setProvince(String province) {
//        this.province = province;
//    }
//
//    public String getCity() {
//        return city;
//    }
//
//    public void setCity(String city) {
//        this.city = city;
//    }
//
//    public String getCounty() {
//        return county;
//    }
//
//    public void setCounty(String county) {
//        this.county = county;
//    }
//
//    public int getIsComment() {
//        return isComment;
//    }
//
//    public void setIsComment(int isComment) {
//        this.isComment = isComment;
//    }
//
//    public int getIsZiQu() {
//        return isZiQu;
//    }
//
//    public void setIsZiQu(int isZiQu) {
//        this.isZiQu = isZiQu;
//    }
//
//    public Long getZiQuTime() {
//        return ziQuTime;
//    }
//
//    public void setZiQuTime(Long ziQuTime) {
//        this.ziQuTime = ziQuTime;
//    }
//
//
//    public String getPostManUsername() {
//        return postManUsername;
//    }
//
//    public void setPostManUsername(String postManUsername) {
//        this.postManUsername = postManUsername;
//    }
//
//    public String getPostmanName() {
//        return postmanName;
//    }
//
//    public void setPostmanName(String postmanName) {
//        this.postmanName = postmanName;
//    }
//
//    public String getPostmanPhone() {
//        return postmanPhone;
//    }
//
//    public void setPostmanPhone(String postmanPhone) {
//        this.postmanPhone = postmanPhone;
//    }
//
//    public String getPostmanImageUrl() {
//        return postmanImageUrl;
//    }
//
//    public void setPostmanImageUrl(String postmanImageUrl) {
//        this.postmanImageUrl = postmanImageUrl;
//    }
//
//    public Long getUpdateTim() {
//        return updateTim;
//    }
//
//    public void setUpdateTim(Long updateTim) {
//        this.updateTim = updateTim;
//    }
//
//    public String getVerifyCode() {
//        return verifyCode;
//    }
//
//    public void setVerifyCode(String verifyCode) {
//        this.verifyCode = verifyCode;
//    }
//
//    public Long getShopSureTime() {
//        return shopSureTime;
//    }
//
//    public void setShopSureTime(Long shopSureTime) {
//        this.shopSureTime = shopSureTime;
//    }
//
//    public Long getPostmanSureTime() {
//        return postmanSureTime;
//    }
//
//    public void setPostmanSureTime(Long postmanSureTime) {
//        this.postmanSureTime = postmanSureTime;
//    }
//
//    public Long getPostmanFinishTime() {
//        return postmanFinishTime;
//    }
//
//    public void setPostmanFinishTime(Long postmanFinishTime) {
//        this.postmanFinishTime = postmanFinishTime;
//    }
//
//    public Long getUserFinishTime() {
//        return userFinishTime;
//    }
//
//    public void setUserFinishTime(Long userFinishTime) {
//        this.userFinishTime = userFinishTime;
//    }
//
//    public Long getShopFinishTime() {
//        return shopFinishTime;
//    }
//
//    public void setShopFinishTime(Long shopFinishTime) {
//        this.shopFinishTime = shopFinishTime;
//    }
//
//    public String getShopAddress() {
//        return shopAddress;
//    }
//
//    public void setShopAddress(String shopAddress) {
//        this.shopAddress = shopAddress;
//    }
//
//    public Double getShopLat() {
//        return shopLat;
//    }
//
//    public void setShopLat(Double shopLat) {
//        this.shopLat = shopLat;
//    }
//
//    public Double getShopLng() {
//        return shopLng;
//    }
//
//    public void setShopLng(Double shopLng) {
//        this.shopLng = shopLng;
//    }
//
//    public Integer getIsUrgent() {
//        return isUrgent;
//    }
//
//    public void setIsUrgent(Integer isUrgent) {
//        this.isUrgent = isUrgent;
//    }
//
//    public Integer getIsPaid() {
//        return isPaid;
//    }
//
//    public void setIsPaid(Integer isPaid) {
//        this.isPaid = isPaid;
//    }
//
//    public String getNote() {
//        return note;
//    }
//
//    public void setNote(String note) {
//        this.note = note;
//    }
//
//    public Double getAwardMoney() {
//        return awardMoney;
//    }
//
//    public void setAwardMoney(Double awardMoney) {
//        this.awardMoney = awardMoney;
//    }
//
//    public Double getTotalMoney() {
//        return totalMoney;
//    }
//
//    public void setTotalMoney(Double totalMoney) {
//        this.totalMoney = totalMoney;
//    }
//
//    public String getAddress2() {
//        return address2;
//    }
//
//    public void setAddress2(String address2) {
//        this.address2 = address2;
//    }
//
//    public Integer getPreDayNo() {
//        return preDayNo;
//    }
//
//    public void setPreDayNo(Integer preDayNo) {
//        this.preDayNo = preDayNo;
//    }
//
//    public Long getShopPushTime() {
//        return shopPushTime;
//    }
//
//    public void setShopPushTime(Long shopPushTime) {
//        this.shopPushTime = shopPushTime;
//    }
//
//    public Long getPostmanPullTime() {
//        return postmanPullTime;
//    }
//
//    public void setPostmanPullTime(Long postmanPullTime) {
//        this.postmanPullTime = postmanPullTime;
//    }
//
//    public Long getAgentId() {
//        return agentId;
//    }
//
//    public void setAgentId(Long agentId) {
//        this.agentId = agentId;
//    }
//
//    public String getChangePostman() {
//        return changePostman;
//    }
//
//    public void setChangePostman(String changePostman) {
//        this.changePostman = changePostman;
//    }
//
//    public Integer getIsRefundApply() {
//        return isRefundApply;
//    }
//
//    public void setIsRefundApply(Integer isRefundApply) {
//        this.isRefundApply = isRefundApply;
//    }
//
//    public Double getTotalGoodsMoney() {
//        return totalGoodsMoney;
//    }
//
//    public void setTotalGoodsMoney(Double totalGoodsMoney) {
//        this.totalGoodsMoney = totalGoodsMoney;
//    }
//
//    public Integer getOrderType() {
//        return orderType;
//    }
//
//    public void setOrderType(Integer orderType) {
//        this.orderType = orderType;
//    }
//
//    public Integer getIsAppointment() {
//        return isAppointment;
//    }
//
//    public void setIsAppointment(Integer isAppointment) {
//        this.isAppointment = isAppointment;
//    }
//
//    public Double getPacketPrice() {
//        return packetPrice;
//    }
//
//    public void setPacketPrice(Double packetPrice) {
//        this.packetPrice = packetPrice;
//    }
//
//    public String getServiceUsername() {
//        return serviceUsername;
//    }
//
//    public void setServiceUsername(String serviceUsername) {
//        this.serviceUsername = serviceUsername;
//    }
//
//    public Long getServiceSureTime() {
//        return serviceSureTime;
//    }
//
//    public void setServiceSureTime(Long serviceSureTime) {
//        this.serviceSureTime = serviceSureTime;
//    }
//
//    public Long getServicePushTime() {
//        return servicePushTime;
//    }
//
//    public void setServicePushTime(Long servicePushTime) {
//        this.servicePushTime = servicePushTime;
//    }
//
//    public Long getServiceFinishTime() {
//        return serviceFinishTime;
//    }
//
//    public void setServiceFinishTime(Long serviceFinishTime) {
//        this.serviceFinishTime = serviceFinishTime;
//    }
//
//    public String getExtra1() {
//        return extra1;
//    }
//
//    public void setExtra1(String extra1) {
//        this.extra1 = extra1;
//    }
//
//    public String getExtra2() {
//        return extra2;
//    }
//
//    public void setExtra2(String extra2) {
//        this.extra2 = extra2;
//    }
//
//    public String getExtra3() {
//        return extra3;
//    }
//
//    public void setExtra3(String extra3) {
//        this.extra3 = extra3;
//    }
//
//    public List<OrderGoodsLabelVO> getLabelList() {
//        return labelList;
//    }
//
//    public void setLabelList(List<OrderGoodsLabelVO> labelList) {
//        this.labelList = labelList;
//    }
//
//    public Double getShopMoney() {
//        return shopMoney;
//    }
//
//    public void setShopMoney(Double shopMoney) {
//        this.shopMoney = shopMoney;
//    }
//
//    public String getPostFailReason() {
//        return postFailReason;
//    }
//
//    public void setPostFailReason(String postFailReason) {
//        this.postFailReason = postFailReason;
//    }
//
//    public Integer getCanJuCount() {
//        return canJuCount;
//    }
//
//    public void setCanJuCount(Integer canJuCount) {
//        this.canJuCount = canJuCount;
//    }
//
//    public Double getCanJuPrice() {
//        return canJuPrice;
//    }
//
//    public void setCanJuPrice(Double canJuPrice) {
//        this.canJuPrice = canJuPrice;
//    }
//
//    public Double getOriginalYunFei() {
//        return originalYunFei;
//    }
//
//    public void setOriginalYunFei(Double originalYunFei) {
//        this.originalYunFei = originalYunFei;
//    }
//
//    public Double getOriginalYunFeiShop() {
//        return originalYunFeiShop;
//    }
//
//    public void setOriginalYunFeiShop(Double originalYunFeiShop) {
//        this.originalYunFeiShop = originalYunFeiShop;
//    }
//
//    public OtherOrderInfoVO getOtherOrderInfo() {
//        return otherOrderInfo;
//    }
//
//    public void setOtherOrderInfo(OtherOrderInfoVO otherOrderInfo) {
//        this.otherOrderInfo = otherOrderInfo;
//    }
//
//    public Double getTipMoney() {
//        return tipMoney;
//    }
//
//    public void setTipMoney(Double tipMoney) {
//        this.tipMoney = tipMoney;
//    }
}
